The language
- Now a::B = c should evaluate a then c.
- Anonymous arguments *, **, & can be passed for forwarding.
- Multi-precision integer is available now via mruby-bigint gem.
mruby VM and bytecode
- OP_ARYDUP was renamed to OP_ARYSPLAT. The instruction name was changed but instruction number and basic behavior have not changed (except that ARYDUP nil makes []).
Tools
mruby
- -b only specifies the script is the binary. The files loaded by -r are not affected by the option.
- mruby now loads compiled binary if the suffix is .mrb.
mrbc
- Add --no-optimize option to disable optimization.
mrbgems
mruby-class-ext
- Add Class#subclasses method.
- Add Module#undefined_instance_methods method.
New bundled gems
Breaking Changes
mrb_vm_run() may detach top-level local variables referenced from blocks
When the mrb_vm_run() function (including mrb_top_run()) is called, the previous top-level local variables referenced from blocks is detached under either of the following conditions.
- If the stack_keep parameter is given as 0.
- If the number of variables in irep to be executed is less than the number of previous top-level local variables.
This change also affects API functions such as mrb_load_string() and mrb_load_file(). The conditions under which the previous top-level local variables referenced from blocks is detached in these functions are as follows:
- If the function has no mrbc_context pointer parameter, or the mrbc_context pointer parameter is set to NULL.
- If the number of variables held in the mrbc_context pointer is less than the number of previous top-level local variables.
Intentional reliance on previous behavior may cause compatibility problems in your application.
CVEs
Following CVEs are fixed.